package savet.gui.modelos;

import java.util.List;
import java.util.Observable;
import javax.swing.table.AbstractTableModel;
import savet.entidades.Trabalhador;
import savet.util.ListaTrabalhadores;
import savet.util.Observer;

/**
 *
 * @author Adisson Marinho
 */
public abstract class AbstractTrabalhadoresModel extends AbstractTableModel implements Observer {

    public static final int INSERT = 1;
    public static final int DELETE = 2;
    
    protected List<Trabalhador> trabalhadores = ListaTrabalhadores.getInstance().getTrabalhadores();

    public int getRowCount() {
        return trabalhadores.size();
    }

    @Override
    public abstract Class<?> getColumnClass(int columnIndex);

    public abstract int getColumnCount();

    @Override
    public abstract String getColumnName(int column);

    public abstract Object getValueAt(int rowIndex, int columnIndex);

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return true;
    }

    @Override
    public abstract void setValueAt(Object aValue, int rowIndex, int columnIndex);

    public Trabalhador getTrabalhador(int row) {
        return trabalhadores.get(row);
    }

    protected List<Trabalhador> getTrabalhadores() {
        return trabalhadores;
    }

    protected void setTrabalhadores(List<Trabalhador> trabalhadores) {
        this.trabalhadores = trabalhadores;
    }

    /**
     * Implementacao default do metodo {@link Observer#update(java.util.Observable, java.lang.Object)}.
     * @param o observador
     * @param arg
     */
    public void update(Observable o, Object arg) {
    }

}
